#include "cwhsobject.h"

CWhsObject::CWhsObject()
{
    pnext = nullptr;
}

//CWhsObject::~CWhsObject()
//{
//}
void CWhsObject::Show(QPainter* p, short view, short)
{
    if(!(Flags & 0x10)) { // Flags.fVISIBLE
       /*if(iCode != 5)*/ return;
    }
    if(!(Flags & 0x8)) // Flags. fALLVIEWS
    if(iView != view) return; // Отображение по номеру текщего слоя

    p->setPen(pen);
    p->setBackgroundMode(Qt::TransparentMode);

    if(iCode == 17) { // Полилайн (WINOBJ_POLYLINE)
        if(pl.count() == 0) return;
        p->drawPolyline(pl);
        return;
    }
    if((iCode == 2) || (iCode == 22)) { // Файл BMP (WINOBJ_BITMAP, WINOBJ_JPG)
        if(ind.isNull()) p->drawRect(x, y, sx, sy);
//        else                  p->drawImage(QRect(x, y, sx, sy), ind);
        else                  p->drawPixmap(QRect(x, y, sx, sy), ind);
        return;
    }
    if(iCode == 15) { // Отрезок прямой линии (WINOBJ_LINE)
        p->drawLine(pl.point(0), pl.point(1));
        return;
    }
    if((iCode == 8) || (iCode == 12)) { // Дуга эллипса, окружности (WINOBJ_EARC, WINOBJ_CARC)
        p->drawArc(x, y, sx, sy, pl.point(0).x(), pl.point(0).y());
        return;
    }

    if((iCode == 18) || (iCode == 19)) { // Текстовая строка, Текст (WINOBJ_STRING, WINOBJ_TEXT)
        p->setFont(font);
        if(mode == 1) {
            p->setBackgroundMode(Qt::OpaqueMode);
            p->setBackground(background);
        }
        p->drawText(x, y, sx, sy, align, str);
        return;
    }

    p->setBrush(brush);
    if(mode == 1) {
        p->setBackgroundMode(Qt::OpaqueMode);
        p->setBackground(background);
    }
    if(iCode == 16) { // Полигон (WINOBJ_POLYGON)
        if(pl.count() == 0) return;
        p->drawPolygon(pl);
        return;
    }
    if(iCode == 5) { // Прямоугольник (WINOBJ_RECTANGLE)
        p->drawRect(x, y, sx, sy);
        return;
    }
    if(iCode == 6) { // Скругленный прямоугольник (WINOBJ_ROUND)
        p->drawRoundedRect(x, y, sx, sy, (qreal)pl.point(0).x(), (qreal)pl.point(0).y(), Qt::AbsoluteSize);
        return;
    }
    if((iCode == 7) || (iCode == 11)) { // Эллипс, Окружность (WINOBJ_ELLIPSE, WINOBJ_CIRCLE)
        p->drawEllipse(x, y, sx, sy);
        return;
    }
     if((iCode == 9) || (iCode == 13)) { // Сектор эллипса, окружности (WINOBJ_EPIE, WINOBJ_CPIE)
         p->drawPie(x, y, sx, sy, pl.point(0).x(), pl.point(0).y());
         return;
     }
     if((iCode == 10) || (iCode == 14)) { // Сегмент эллипса, окружности (WINOBJ_ECHORD, WINOBJ_CCHORD)
         p->drawChord(x, y, sx, sy, pl.point(0).x(), pl.point(0).y());
         return;
     }
}
